{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"https://raw.githubusercontent.com/Qiskit/qiskit-tutorials/master/images/qiskit-heading.png\" alt=\"Note: In order for images to show up in this jupyter notebook you need to select File => Trusted Notebook\" width=\"500 px\" align=\"left\">"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## _*Relaxation and Decoherence*_ \n",
    "\n",
    "The latest version of this notebook is available on https://github.com/qiskit/qiskit-tutorial.\n",
    "\n",
    "***\n",
    "### Contributors\n",
    "Martin Sandberg, Hanhee Paik, Antonio Córcoles, Doug McClure, Jay Gambetta, and Yael Ben-Haim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "import qiskit\n",
    "from qiskit.providers.aer.noise.errors.standard_errors import amplitude_damping_error\n",
    "from qiskit.providers.aer.noise.errors.standard_errors import phase_damping_error\n",
    "from qiskit.providers.aer.noise import NoiseModel\n",
    "\n",
    "from qiskit.ignis.characterization.coherence import T1Fitter, T2StarFitter, T2Fitter\n",
    "from qiskit.ignis.characterization.coherence import t1_circuits, t2_circuits, t2star_circuits"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction\n",
    "\n",
    "In an ideal world, quantum systems would be well-isolated from their environment, which would prevent unwanted dynamics of the quantum information we encode in them. For example, suppose we prepared a qubit in the $|1>$ state, but through interaction with the environment, the state is flipped to $|0>$. That flip could affect the outcome of a quantum algorithm that's being run using that qubit, meaning the answers we get out of the quantum device would change. For this reason, we seek to isolate quantum computers from the surrounding environment.\n",
    "\n",
    "However, perfect isolation is not possible: after all, we have to be able to control the quantum computer, which means coupling it to external systems to manipulate quantum information. This tradeoff is sometimes referred to as the \"Tao of quantum computing\". Because our controls introduce coupling between qubits and the environment, we expect some unwanted interactions can occur.\n",
    "\n",
    "These unwanted interactions introduce _noise_ into the qubits, which affects their behavior. The rate of these interactions sets characteristic timescales over which information encoded in qubits can be reliably stored and manipulated. (If the interaction has a rate $\\Gamma$, the characteristic timescale is $\\sim 1/\\Gamma$.) In this tutorial, we discuss two timescales that arise from energy relaxation and decoherence -- usually referred to as $T_{1}$ and $T_{2}$, respectively -- and show how they can be measured."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Measuring $T_1$ time\n",
    "\n",
    "**Theory**\n",
    "\n",
    "The $T_{1}$ time is the characteristic timescale over which the state of a qubit damps toward the $|0>$ state. Given an arbitrary initial single-qubit state $\\rho(0)$, represented by a $2\\times 2$ matrix as\n",
    "$$\\rho(0) = \\begin{pmatrix}\\rho_{00} & \\rho_{01} \\\\ \\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix},$$\n",
    "under amplitude damping noise, the state of the changes as\n",
    "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} + (1-e^{-\\Gamma_{1}t})\\rho_{11} & e^{-\\Gamma_{1}t/2}\\rho_{01} \\\\ e^{-\\Gamma_{1}t/2}\\rho_{01}^{\\star} & e^{-\\Gamma_{1} t}\\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} |0><0|.$$\n",
    "\n",
    "Notice that amplitude damping noise also removes any coherences between $|0>$ and $|1>$ of the state (the off-diagonal elements.) The rate at which this _decoherence_ occurs is half that of $\\Gamma_{1}$.\n",
    "\n",
    "The time evolution of the state under amplitude damping noise can be derived as the continuous-time limit of an amplitude damping channel\n",
    "$$\\mathcal{E}[\\rho] = M_{0} \\rho M_{0}^{\\dagger} + M_{1}\\rho M_{1}^{\\dagger},$$\n",
    "where\n",
    "$$M_{0} = \\begin{pmatrix} 1 & 0 \\\\0& \\sqrt{1-p}\\end{pmatrix}~,~M_{1} = \\begin{pmatrix} 0 & \\sqrt{p} \\\\ 0 & 0 \\end{pmatrix},$$\n",
    "and the probability of decay $p$ is $\\Gamma_{1}\\Delta t$.\n",
    "\n",
    "The decay rate $\\Gamma_{1}$ sets a natural time scale for the decay process; namely, $\\Gamma^{-1}$. This number is often called the $T_{1}$ time. Notice the off-diagonal elements also decay, with characteristic decay rate $\\Gamma /2$.\n",
    "\n",
    "Notice that the probability of the qubit remaining in the $|1>$ state is given by\n",
    "\n",
    "$$P_{1}(t) = \\mathrm{Tr}\\left[ |1><1| \\rho(t)\\right] = e^{-\\Gamma_{1} t}\\rho_{11}.$$\n",
    "\n",
    "If the qubit was prepared in the $|1>$ state, then $P_{1}(t) =e^{-\\Gamma_{1} t}$.\n",
    "\n",
    "A simple way of estimating the $T_{1}$ time is to collect statistics about the decay curve for $P_{1}(t)$ when the qubit is initialized to $|1>$. This can be done by choosing a variety of times $t_{1}, t_{2}, \\cdots t_{N}$, and then running the following experiment many times:\n",
    "* Prepare the qubit in $|1>$.\n",
    "* Wait a delay time $t_{j}$.\n",
    "* Measure the qubit in the $|0>, |1>$ basis.\n",
    "\n",
    "An estimate of $P_{1}(t_{j})$ is the number of times the qubit was observed to be in $|1>$, divided by the total number of times the experiment was repeated. Given several estimated values of $P_{1}$ for a variety of $(t_{j})$, we can fit the resulting decay curve is fit to an exponential and extract an estimate of $\\Gamma_{1}$, and hence, the $T_{1}$ time.\n",
    "\n",
    "The IBM Q Experience does not currently support delays of arbitrary length, so for now, we just append a series of identity operations after the initial excitation pulse. Each identity operation has the same duration of a single-qubit gate and is followed by a -shorter- buffer time. These parameters are backend-dependent.\n",
    "\n",
    "**Code**\n",
    "\n",
    "The code blocks below walk through constructing the requisite experiments to estimate the $T_{1}$ time of a qubit, sending those experiments to a simulator, and then fitting the data the simulator sends back."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-18T15:34:52.275440Z",
     "start_time": "2018-12-18T15:32:05.667514Z"
    }
   },
   "outputs": [],
   "source": [
    "# 12 numbers ranging from 10 to 1000, logarithmically spaced\n",
    "# extra point at 1500\n",
    "num_of_gates = np.append((np.logspace(1, 3, 12)).astype(int), np.array([1500]))\n",
    "gate_time = 0.1\n",
    "\n",
    "# Select the qubits whose T1 are to be measured\n",
    "qubits = [0]\n",
    "\n",
    "# Generate experiments\n",
    "circs, xdata = t1_circuits(num_of_gates, gate_time, qubits)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "One of the features of the fitters are that we can split the circuits into multiple jobs and then give the results to the fitter as a list. Demonstrated below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Set the simulator with amplitude damping noise\n",
    "t1 = 25.0\n",
    "gamma = 1 - np.exp(-gate_time/t1)\n",
    "error = amplitude_damping_error(gamma)\n",
    "noise_model = NoiseModel()\n",
    "noise_model.add_quantum_error(error, 'id', [0])\n",
    "\n",
    "# Run the simulator\n",
    "backend = qiskit.Aer.get_backend('qasm_simulator')\n",
    "shots = 200\n",
    "backend_result = qiskit.execute(circs, backend,\n",
    "                                shots=shots, noise_model=noise_model).result()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f16906cd4a8>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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Tp0gs95OWL8+6HCMKda8efOoXbs2WSEtPWrUqMF7773H+eefX+rz5efn07dvX1JTU3nyySf3rE9PTwfg+uuvp1GjRjRo0IDrrruOKVOm7PtNeDIyCvsNp6en7/U50tAbK1eupHnz5lSrFr1habNmzQBX7NSsWTOSkgq//po3b86qVasAmDBhwp6GCGeeeSYHHXQQo0aN4u677+aAAw6gd+/erF69muXLl7N69Wrq1au3Z3nggQdYt25dsTGVdP0CmSHFHjVq1CA7O5vVq1fvNaRO8+bN97wPjbVVq1Z7Yo0Xv814TwQU2AK0jbC9co6Im5/vKkV69IDRo4OOxiSS4sbkqlGj+O0NGrBjypTow0x4X3SlMXfuXNq1a1fkiyUlJYWGDUuclXQvqrqn7mHKlClFBtvbb7/99hrWJRF66Tdr1owVK1awe/fuqEmkIM7GjRuzcuVK8vPz93yJr1ixgkMOOQSAPn360KdPnyLHXnLJJVxyySVs2bKFQYMGMXToUAYPHkxWVhY//vhjqWIq6frFadSoEatWrUJV99zPihUraNVqT8+HPbGuWrWKW265haFDhzI+Tj2hfT2BqGpWCUvkJhgVXVISn+zuxNqxU8FGjTcJrDT1HyW55pprWLRoEZMnT97zxBHqsssu44knnuC3335j06ZNPPXUU5x99tkRz7V792527txJXl4eeXl57Ny5My6toI477jgaNWrEbbfdxrZt29i5cyeff/55xH07duxIjRo1eOihh8jNzWXWrFlMnjx5rzqTAosXL+ajjz5i165dpKWlkZ6eTlJSEscddxy1a9dmxIgR7Nixg7y8PBYuXMjXX39dbEylvX6oTp06Ua1aNR5//HFyc3N58803+eqrr0qMNV4qwlAmgfqwTi+W7mrM2k+WBB2KMVHNmzevVAnk6quv5uqrr95r/fLlyxkzZgxz584lMzNzT1HOhAkT9uxz55130qFDBw455BDatGlDu3btGDZs2J7tBZXeAPfffz/p6ek8+OCDvPzyy6Snp8elw1tycjKTJ0/mp59+4sADD6Rp06ZMmjQp4r6pqalMnjyZqVOn0qBBAwYPHsy4ceM49NBDI+6/a9cubrvtNho0aEBmZia//fYb//jHP0hOTubdd99l7ty5ZGVl0aBBA6688ko2b95cbEylvX547G+++SZjx46lfv36TJo0iV69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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f169078e048>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Fit the data to an exponential\n",
    "# The correct answers are a=1, and c=0, and t1=25/15 for qubit 0/2\n",
    "# The user does not know the correct answer exactly,\n",
    "# so starts the fit from a different but close location\n",
    "\n",
    "initial_t1 = t1*1.2\n",
    "initial_a = 1.0\n",
    "initial_c = 0.0\n",
    "\n",
    "fit = T1Fitter(backend_result, xdata, qubits,\n",
    "               fit_p0=[initial_a, initial_t1, initial_c],\n",
    "               fit_bounds=([0, 0, -1], [2, initial_t1*2, 1]))\n",
    "\n",
    "fit.plot(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Measuring $T_2^*$ time\n",
    "\n",
    "**Theory**\n",
    "\n",
    "Amplitude damping noise affects the off-diagonal elements of the density matrix in addition to the on-diagonal elements. However, there are other noise processes that only affect the off-diagonal elements, while keeping the on-diagonal elements the same. These kinds of noise processes cause _decoherence_.\n",
    "\n",
    "As a simple example of decoherence, consider the pure superposition state\n",
    "$$| \\psi(\\theta) > = \\frac{1}{\\sqrt{2}}\\left(|0> + e^{i\\theta} |1>\\right).$$\n",
    "Expressed as a density matrix, this state is\n",
    "$$\\rho(\\theta) = | \\psi(\\theta) >< \\psi(\\theta) | = \\frac{1}{2}\\begin{pmatrix}1 & e^{-i\\theta} \\\\ e^{i\\theta} & 1\\end{pmatrix}.$$\n",
    "\n",
    "This state has _coherence_ between $|0>$ and $|1>$, which manifests itself in the non-zero off-diagonal terms. If the state had _decohered_, those off-diagonal terms would be zero:\n",
    "$$\\rho_{\\mathrm{decohered}} =  \\frac{1}{2}\\begin{pmatrix}1 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n",
    "When the state has decohered, it can be written as a classical _mixture_:\n",
    "$$\\rho_{\\mathrm{decohered}} = \\frac{1}{2}\\left(|0><0| + |1><1| \\right).$$\n",
    "\n",
    "One mechanism by which decoherence happens is _dephasing_. Under dephasing noise, the state of the qubit evolves as\n",
    "$$\\rho(t) = \\begin{pmatrix}\\rho_{00} & e^{-\\Gamma_{2}t}\\rho_{01} \\\\ e^{-\\Gamma_{2}t}\\rho_{01}^{\\star} & \\rho_{11}\\end{pmatrix} \\underset{t\\rightarrow \\infty}{\\longrightarrow} \\begin{pmatrix}\\rho_{00} & 0\\\\ 0& \\rho_{11}\\end{pmatrix}.$$\n",
    "\n",
    "The time evolution of $\\rho$ under dephasing noise can be derived as the continuous-time limit of the following noise channel:\n",
    "$$\\mathcal{E}[\\rho] = M_{0}\\rho M_{0}^{\\dagger} + M_{1} \\rho M_{1}^{\\dagger} + M_{2}\\rho M_{2}^{\\dagger},$$\n",
    "where\n",
    "$$M_{0} =\\sqrt{1-p}I~,~M_{1} = \\sqrt{p}\\begin{pmatrix}1 &0 \\\\ 0 & 0 \\end{pmatrix}~,~M_{2} = \\sqrt{p}\\begin{pmatrix}0 & 0 \\\\ 0 & 1\\end{pmatrix}.$$\n",
    "\n",
    "\n",
    "The rate of decay in the coherences can be measured by the following experiment:\n",
    "\n",
    "* Prepare the qubit in the $|+>$ state, which can be done by initializing the qubit to $|0>$ and applying a Hadamard gate, $H$.\n",
    "* Wait a delay time $t_{j}$.\n",
    "* Measure the qubit in the $| \\pm >$ basis, which can be done by applying a Hadamard and then measuring in the computational basis.\n",
    "\n",
    "If decoherence processes are present, then after a delay time $t_{j}$, the state of the qubit is\n",
    "\n",
    "$$\\rho(t_{j}) = \\frac{1}{2}\\begin{pmatrix}1 & e^{-\\Gamma_{2}t_{j}} \\\\ e^{-\\Gamma_{2}t_{j}} & 1\\end{pmatrix}.$$\n",
    "\n",
    "Measuring in the $| \\pm >$ basis, the probability of observing the outcome $|+>$ is given by\n",
    "\n",
    "$$P_{+}(t_{j}) = \\mathrm{Tr}\\left(|+><+| \\rho(t_{j})\\right) = \\frac{1}{2}\\left(1 + e^{-\\Gamma_{2}t_{j}}\\right).$$\n",
    "\n",
    "Again, by estimating $P_{+}(t_{j})$ for a variety of $t_{j}$, we can then fit a decay curve to extract an estimate of $\\Gamma_{2}$.\n",
    "\n",
    "In the actual experiment, we change the phase of the pulse before the measurement in order to create oscillations in the observed dynamics of $P_{+}(t_{j})$. If we just did two Hadamard gates separated by a delay, we would observe a decay of characteristic time $T^*_2$, but with a strong dependence on any deviation of the calibrated qubit frequency from the actual one. By implementing the qubit pulses with different phases, we shift the frequency dependence into the oscillating feature of the dynamics, and can fit the decaying envelope for a more faithful measure of the coherence time."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-danger\">\n",
    "\n",
    "There is one subtle point of note. In the discussion of $T_{1}$ time above, we saw that amplitude damping noise also causes the off-diagonal elements to decay (at a rate $\\Gamma_{1}/2$). Suppose a qubit was affected by only amplitude damping noise, and dephasing noise was absent. In this scenaro, _the rate of decay of coherences can be non-zero, even in the absense of dephasing noise_.\n",
    "\n",
    "For this reason, it's important to recognize there are many noise processes contributing to the rate at which coherences decay. In this tutorial, we assume that the total rate of decoherence, $\\Gamma$, can be decomposed into a sum of independent rates:\n",
    "\n",
    "$$\\Gamma = \\Gamma_{T_{1}} + \\Gamma_{2} + \\Gamma_{\\mathrm{other}}. $$\n",
    "\n",
    "Phenomenologically, the rate $\\Gamma_{\\mathrm{other}}$ quantifies the rate of decoherence due to other noise processes in addition to pure amplitude damping and pure dephasing about the $Z$-axis. Note that because general noise can cause dephasing about the $Z$-axis -- in addition to doing other things to the qubit -- echo sequences are typically used to help mitigate the effects of those kind(s) of noise on $T_{2}^{\\star}$. (Echo sequences are discussed below, in the sections $T_{2}$ echo  and CPMG measurement.)\n",
    "\n",
    "If decoherence at a rate $\\Gamma$ is taking place, then the state of the qubit changes as\n",
    "$$\\begin{equation}\n",
    "\\rho(t) = \\begin{pmatrix}\\rho_{00} & e^{-\\Gamma t}\\rho_{01} \\\\ e^{-\\Gamma t}\\rho_{01}^{\\star} & 1-\\rho_{00}\\end{pmatrix}.\n",
    "\\end{equation}$$\n",
    "\n",
    "The timescale associated with this decay rate is called $T_{2}$, and is given by $T_{2} = 1/\\Gamma$.\n",
    "\n",
    "\n",
    "$T_{2}$ relates to the other timescales introduced previously as\n",
    "$$T_{2} = \\left(\\frac{2}{T_{1}} + \\frac{1}{T_{2}} + \\frac{1}{T_{\\mathrm{other}}}\\right)^{-1} = T_{2}^{\\star}\\left( 1 + \\frac{2T_{2}^{\\star}}{T_{1}} + \\frac{T^{\\star}_{2}}{T_{\\mathrm{other}}}\\right)^{-1} \\leq T_{2}^{\\star},$$\n",
    "where we've defined $T_{\\mathrm{other}}  = 1 /\\Gamma_{\\mathrm{other}}$.\n",
    "\n",
    "</div> "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-18T15:34:52.275440Z",
     "start_time": "2018-12-18T15:32:05.667514Z"
    }
   },
   "outputs": [],
   "source": [
    "# 50 points linearly spaced in two regions (fine and coarse)\n",
    "# 30 from 10->150, 20 from 160->450\n",
    "num_of_gates = np.append((np.linspace(10, 150, 30)).astype(int), (np.linspace(160,450,20)).astype(int))\n",
    "gate_time = 0.1\n",
    "\n",
    "# Select the qubits whose T2* are to be measured\n",
    "qubits = [0]\n",
    "\n",
    "# Generate experiments\n",
    "circs, xdata, osc_freq = t2star_circuits(num_of_gates, gate_time, qubits, nosc=5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "backend = qiskit.Aer.get_backend('qasm_simulator')\n",
    "\n",
    "# Set the simulator with phase damping noise\n",
    "t2 = 10\n",
    "p = 1 - np.exp(-2*gate_time/t2)\n",
    "error = phase_damping_error(p)\n",
    "noise_model = NoiseModel()\n",
    "noise_model.add_quantum_error(error, 'id', [0])\n",
    "\n",
    "# Run the simulator\n",
    "shots = 300\n",
    "backend_result = qiskit.execute(circs, backend,\n",
    "                                shots=shots, noise_model=noise_model).result()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f1656912a58>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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dSInJ4cnn3yyznn+ZFq2bFnA/rOzs3nwwQfp27cvbdq0YdSoUTU+G9988w1HHnkkGRkZdcobkjUcOFUgc4HQ/kpjlJwcqCivq0DKy025xRJrLFq0iH79+gV93vjx4xk/fnwYJPLPli1bWLlyJX369AlY77XXXuPDDz9k5cqVvPXWW5x66qnce++9/PLLL1RXVzNlypR651RVVTFy5Eh69OjBmjVr2LBhA6NHj65TZ8aMGbzzzjv8+uuvnH322Zx00kn8/PPPPPbYY4wZM4YVK1b4lGfFihVMnTqVBQsWsHv3bt5//32ys7Oprq7mjDPO4IgjjmDDhg18/PHHPPnkk7z//vsBZaqoqOCMM85osP9XXnmF9957j6KiIhYvXsy0adMoLy/nrLPOIi8vj23btnH++efz2muvNShruHCqQG4ALhWRi0Wko4gkeG/BdCoi40WkSERKRWShiAxtoP6FIrJIRPaKyGYReV5EwjKhlJUF+VPKSWUvqVJKairk59vpK0vssWvXLtasWdMoBfLEE0/wxBNPhEEq31RUVDBmzBguueQSfvOb3wSsO2HCBDIzM+natStDhw5l0KBB9O/fn5SUFM4++2y++eabeufMnz+fjRs38sADD5CWlkZKSgrHHntsnTrXXXcd3bp1Y9GiRRQXF3PLLbfgcrkYPnw4I0eOZMaMGT7lSUxMpKysjO+//56Kigqys7M58MADWbBgAb/88gt33HEHLpeLnj17cskll/DSSy8FlOnLL7901P91111Hly5daN++PWeccQaLFi3iyy+/pKKightuuIHk5GTOO+88jjrqqAZlDRdOH/wrgcMwC+lbgAqvrdxphyIyCngUuBfoD3wOzBKR7n7q/xYoAJ4D+gBnAYcCLzjtM1jyrkxhScIR3NbhCVavhry8cPVksTSeb7/9loyMjCbFMooE1dXV5OXl4XK5mDp1aoP1MzMza76npqbW2y8uLq53zk8//USPHj0Crm1069YNMNNO3bp1IyFh3+OvR48ebNiwAYAXXnihxijh1FNPpVevXjzyyCNMmjSJ/fffn9GjR7Nx40bWrl3Lxo0badu2bc320EMPsWXLloAyNdS/h6xab62tW7emuLiYjRs30rVr1zpe5D169Kj57k/WcOF0JekuQBus5YybgGmq+ox7f4KInAJcDfzFR/3BwHpV/Yd7v0hEHgMe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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f168bfb1ef0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Fit the data to an oscillator\n",
    "# The correct answers are a=0.5, f=osc_freq, phi=0, c=0.5, and t2=10/5 for qubit 0/2\n",
    "# The user does not know the correct answer exactly,\n",
    "# so starts the fit from a different but close location\n",
    "\n",
    "initial_t2 = t2*1.1\n",
    "initial_a = 0.5\n",
    "initial_c = 0.5\n",
    "initial_f = osc_freq \n",
    "initial_phi = -np.pi/20\n",
    "\n",
    "fit = T2StarFitter(backend_result, xdata, qubits,\n",
    "                   fit_p0=[initial_a, initial_t2, initial_f, initial_phi, initial_c],\n",
    "                   fit_bounds=([-0.5, 0, 0, -np.pi, -0.5],\n",
    "                               [1.5, 2*t2, 2*osc_freq, np.pi, 1.5]))\n",
    "\n",
    "fit.plot(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Measuring T2 Time using a single echo pulse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We have referred to the previous experiment's characteristic time as 𝑇∗2 and not 𝑇2\n",
    "\n",
    "by analogy to nuclear magnetic resonance (NMR). Indeed, one can isolate different frequency components to the decoherence process by devising increasingly elaborated pulse sequences. To illustrate the analogy with NMR, one can think about an ensemble of nuclear spins precessing in an external DC magnetic field. Due to field inhomogeneities, each spin might precess with a slightly different Larmor frequency. This certainly will affect the observed coherence time of the ensemble. However, it is possible to echo away this low-frequency decoherence process by applying a pi-pulse to the system halfway through the delay. The effect of this pi-pulse is to reverse the direction of the precession of each individual spin due to field inhomogeneities. Thus, the spins that had precessed more now start precessing in the opposite direction faster than the spins that had precessed less, and after an equal delay, all the spins in the system recover the initial coherence, except for other, higher-frequency, decoherence mechanisms.\n",
    "\n",
    "Here, we are measuring only a single qubit rather than an ensemble of spins. Consequently coherence measurements require averaging an ensemble of measurements in order to eliminate projection noise, and run-to-run fluctuations in the qubit's frequency which will similarly manifest themselves as decoherence if they are not canceled out. By running this 𝑇2\n",
    "echo sequence, we can therefore remove low-frequency components of the decoherence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-18T15:34:52.275440Z",
     "start_time": "2018-12-18T15:32:05.667514Z"
    }
   },
   "outputs": [],
   "source": [
    "# 50 points linearly spaced to 300\n",
    "num_of_gates = (np.linspace(10, 300, 50)).astype(int)\n",
    "gate_time = 0.1\n",
    "\n",
    "# Select the qubits whose T2 are to be measured\n",
    "qubits = [0]\n",
    "\n",
    "# Generate experiments\n",
    "circs, xdata = t2_circuits(num_of_gates, gate_time, qubits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "backend = qiskit.Aer.get_backend('qasm_simulator')\n",
    "\n",
    "# Set the simulator with phase damping noise\n",
    "t2 = 10\n",
    "p = 1 - np.exp(-2*gate_time/t2)\n",
    "error = phase_damping_error(p)\n",
    "noise_model = NoiseModel()\n",
    "noise_model.add_quantum_error(error, 'id', [0])\n",
    "\n",
    "# Run the simulator\n",
    "shots = 300\n",
    "backend_result = qiskit.execute(circs, backend,\n",
    "                                shots=shots, noise_model=noise_model).result()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f1655305860>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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hx9+4G9/+xsjRoxg8eLFQWVavHgxDz/8MPPmzWPLli1Mnz6d7t27U1VVxZAhQ+jTpw8rV67knXfe4cEHH2T69OlhZdq5c+ce7Z9zzjm12n/++ed58803KS0t5bPPPmPixIkAVFRU8Ktf/Yphw4axceNGzjzzTF588cU95Fy1alWNnHFDVes8gNeAa7yUTaajX79+GsjMmTP3SAtk0iTVjAzVzMwqzctz58mMlz6lEqnUn6+++spTuZ9++inOkoRn8+bNKiL67bff1qTNmTNHBw4cqEcddZQOHTpUKyoq6qynoqJCi4qKdMyYMVpRUaHTp0/X7OxsHTx4cNjyY8eO9VS+W7du+vTTT9ecn3766XrJJZfUnD/00EN62mmn1So/Y8YM/eCDD7Rt27a6c+fOkPX+4x//qDmfNWuWdujQQSsrK2vSzjjjDL3tttuCXv/1119ru3btdMaMGbX+Th9++KF26dKlVtm7775bhw8fHlamYO0PHTq0pv1u3brp5MmTa/Kuu+46HTlypKqqvvfee9qxY0etqqqqyR80aJD+8Y9/rCXnhg0bgvbFn1D/v8BH6uEZ63UEcjVwgYicJyJtRSQj8IiXgksEw85VXssfyp9aPcDSpTBsWKIlMlKK6kVEfkf2E0+4vG3bgubje7tk/frg+VOmuPzvv49KpE8//ZT8/PxaYSu6dOnCu+++y6xZs+jevTv/+c9/6qwnOzubV155henTp1NYWMj999/P//3f/7HXXnuFLf/66697Kg/QoUOHmu95eXl7nJeVle1xzffff0+3bt3IygodnalLly4131etWkWXLl1qLQLt2rUrK1eu5JlnnqlxNDj55JMB2GeffXjwwQe5/fbbad++PUOHDmXVqlUsX76cVatW0bJly5rj7rvvZu3atWFlCtZ+t27dWLlyZc15YWFhzfemTZvW9HvVqlV07ty51kLAbt267SHn3nvvXSNnvPD64F8CHIAzpK8FdgYcFXGRLlGIkN0kg0s33U1hq8i9VAwj2ViwYAEHHXRQrYdOx44dycvLAyAnJ8fzivqDDjqIadOmsWHDBqZPn87SpUs57LDDwpZ/7733PJePhi5duvDdd9+FNZD7971Tp058//33VFVV1aR9//33dO7cmXPOOafG0WDatGk1+WeffTbvv/8+y5cvR0S44YYb6NKlC0VFRWzatKnm2LJl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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f169060a668>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Fit the data to an exponent\n",
    "# The correct answers are a=1, c=0, and t2=10/5 for qubit 0/2\n",
    "# The user does not know the correct answer exactly,\n",
    "# so starts the fit from a different but close location\n",
    "\n",
    "initial_t2 = t2*1.1\n",
    "initial_a = 0.5\n",
    "initial_c = 0.5\n",
    "\n",
    "fit = T2Fitter(backend_result, xdata, qubits,\n",
    "               fit_p0=[initial_a, initial_t2, initial_c],\n",
    "               fit_bounds=([-0.5, 0, -0.5],\n",
    "                           [1.5, 2*t2, 1.5]))\n",
    "\n",
    "fit.plot(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Measuring T2 Time by a  CPMG sequence"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As explained above, the echo sequence removes low-frequency decoherence mechanisms. This noise-filtering procedure can be extended with increased number of pi-pulses within the delay. In the following experiment, we implement an echo experiment with seven pi-pulses during the delay between the initial and final pulses. This kind of echo with several pi-pulses is referred to as a CPMG experiment, after Carr, Purcell, Meiboom, and Gill."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2018-12-18T15:34:52.275440Z",
     "start_time": "2018-12-18T15:32:05.667514Z"
    }
   },
   "outputs": [],
   "source": [
    "num_of_gates = (np.linspace(1, 30, 30)).astype(int)\n",
    "gate_time = 0.1\n",
    "\n",
    "# Select the qubits whose T2 are to be measured\n",
    "qubits = [0]\n",
    "\n",
    "# Echo parameters\n",
    "n_echos = 5\n",
    "alt_phase_echo = True\n",
    "\n",
    "# Generate experiments\n",
    "circs, xdata = t2_circuits(num_of_gates, gate_time, qubits, n_echos, alt_phase_echo)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "backend = qiskit.Aer.get_backend('qasm_simulator')\n",
    "\n",
    "# Set the simulator with phase damping noise\n",
    "t2 = 10\n",
    "p = 1 - np.exp(-2*gate_time/t2)\n",
    "error = phase_damping_error(p)\n",
    "noise_model = NoiseModel()\n",
    "noise_model.add_quantum_error(error, 'id', [0])\n",
    "\n",
    "# Run the simulator\n",
    "shots = 300\n",
    "backend_result = qiskit.execute(circs, backend,\n",
    "                                shots=shots, noise_model=noise_model).result()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f1654a4dbe0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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P/9k5MiRQc/PyMjgrbfe4r333iMnJ4cHH3yQs846i9133z3kPbKzd64fl5WVtcv+li1bdnnPsmXL6NSpE/XqhZ6dyX910pUrV9KhQ4dKg0A7duzIihUrePHFFys6Ghx//PEAdO3alUceeYTbb7+dNm3acM4557By5UqWLFnCypUrad68ecV2zz33sGbNmrAxBbt/p06dWLFiRcV+jt9jj4YNG1bke+XKlbRv377SQMBOnTrtEucee+xREWeseJ0Lq7zF67kQxzWCayWPVq3g/vtdVyxVsKkqjBdBupWWbN5MA4CGDYMer9CqVfjjAUs0ezV79mx69epV6UOnbdu2Fa8zMzM9jajfsGEDS5cuZdiwYdSvX5/69etz4YUXcvPNN3PfffcFfU+vXr2YNm1axX7//v254IILqpWPUDp06MDSpUvZsWNHyELEP+/t2rVj2bJllZZ9XbZsGT179uTcc8/l3HPP3eX9gwcPZvDgwWzatInhw4czcuRIRowYQW5uLr/++usu53/99dchYwp2/6VLl9KtW7cq89q2bVtWrFiBqlbkaenSpeyxxx6V4lyxYgXXX389I0eODNnmVFNeaw534NbtuCPEdmdMoksEl14KV10FNl2FSWLh2j+WLFnCRx99xKBBg6q8TqtWrcjNzeXZZ59lx44dFBQUMH78eHr16hXyPT/88ANFRUVs27aNBx54gFWrVjF06NDqZiWofv360bZtW2688Ua2bt1KUVERX375ZcjzDzzwQBo2bMh9991HSUkJ+fn5fPDBB7u0m5SbP38+n376Kdu3b6dBgwZkZWWRlpZGv379aNKkCaNGjaKwsJDS0lJ++uknZsyYETamYPefNGlSyPv7O/jgg6lXrx6jR4+mpKSEiRMn8u2334aNM1Y8XVlVb1fVf4fbYhZhIlCF556D8ePjHYkx1TJnzpygBcimTZsYMmQI48aNqzSt92WXXcZll10W9FoTJ07k448/pnXr1nTt2pWMjAwefvjhiuPljd7lJkyYQNu2bWnTpg2ffPIJU6ZMqVb34XDS09OZNGkSv/32Gx07dmT33XfnlVdeCXl+ZmYmkyZNYvLkybRq1YoRI0YwduxY9tprr6Dnb9++nRtvvJFWrVqRk5PDH3/8wb333kt6ejrvvvsus2fPJjc3l1atWnHJJZewcePGsDEFu//zzz8f8v6BsU+c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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f1654a4d908>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "# Fit the data to an exponent\n",
    "# The correct answers are a=1, c=0, and t2=10/5 for qubit 0/2\n",
    "# The user does not know the correct answer exactly,\n",
    "# so starts the fit from a different but close location\n",
    "\n",
    "initial_t2 = t2*1.1\n",
    "initial_a = 0.5\n",
    "initial_c = 0.5\n",
    "\n",
    "fit = T2Fitter(backend_result, xdata, qubits,\n",
    "               fit_p0=[initial_a, initial_t2, initial_c],\n",
    "               fit_bounds=([-0.5, 0, -0.5],\n",
    "                           [1.5, 2*t2, 1.5]))\n",
    "\n",
    "fit.plot(0)"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "hide_input": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
